package pe.bf.extranet.ejb;

import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.annotation.PostConstruct;
import javax.annotation.Resource;
import javax.ejb.LocalBean;
import javax.ejb.Singleton;
import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.sql.DataSource;

import pe.bf.domain.bean.Abono; 
import pe.bf.domain.bean.SolicitudAbono; 
import pe.bf.domain.constantes.Constantes;
import pe.bf.domain.exceptions.DomainException;
import pe.bf.extranet.dao.SolicitudAbonoDAO; 
import pe.bf.extranet.dao.impl.EmpresaDAOImpl;
import pe.bf.extranet.dao.impl.SolicitudAbonoDAOImpl;

/**
 * Session Bean implementation class SolicitudAbonoEJB
 */
@WebService
@Singleton
@LocalBean
public class SolicitudAbonoEJB {

//	@Resource(mappedName = Constantes.JNDI_DATASOURCE)
	public DataSource dataSource;
	
	
	private SolicitudAbonoDAO solicitudAbonoDAO;
	
	
	
	@PostConstruct
	public void init() {
		solicitudAbonoDAO = new SolicitudAbonoDAOImpl(dataSource);
	}
	
	/**
	 * 
	 * @param solicitudAbono
	 */
	@WebMethod
	public List<String> createSolicitudAbono(SolicitudAbono solicitudAbono)
			throws DomainException,Exception {
		List<String> solicitudAbonoPersist=null;
		try {

			solicitudAbonoPersist=solicitudAbonoDAO.createSolicitudAbono(solicitudAbono);	
		} catch (Exception e) {
			e.printStackTrace();
		}finally{
			return solicitudAbonoPersist;
		}
		
 
		
	}

	/**
	 * 
	 * @param solicitudAbono
	 * @throws DomainException
	 */
	@WebMethod
	public void actualizarSolicitudAbono(SolicitudAbono solicitudAbono)
			throws DomainException {
		solicitudAbonoDAO.actualizarSolicitudAbono(solicitudAbono);
	}

	/**
	 * 
	 * @param solicitudAbono
	 * @throws DomainException
	 */
	@WebMethod
	public void eliminarSolicitudAbono(SolicitudAbono solicitudAbono)
			throws DomainException {
		solicitudAbonoDAO.eliminarSolicitudAbono(solicitudAbono);
	}

	/**
	 * 
	 * @return
	 * @throws DomainException
	 */
	@WebMethod
	public List<SolicitudAbono> listarSolicitudAbono()
			throws DomainException {
		return solicitudAbonoDAO.listarSolicitudAbono();
	}

	/**
	 * 
	 * @param codigoEmpresa
	 * @return
	 * @throws DomainException
	 */
	@WebMethod
	public List<SolicitudAbono> listarSolicitudAbonoPorEmpresa(
			BigInteger codigoEmpresa) throws DomainException {
		return solicitudAbonoDAO
				.listarSolicitudAbonoPorEmpresa(codigoEmpresa);
	}

	/**
	 * 
	 * @param codigoEmpresa
	 * @param codigoSolicitudAbono
	 * @return
	 * @throws DomainException
	 */
	@WebMethod
	public List<Abono> listarDetalleSolicitudAbono(
			BigInteger codigoEmpresa, BigInteger codigoSolicitudAbono)
			throws DomainException {
		return solicitudAbonoDAO.listarDetalleSolicitudAbono(
				codigoEmpresa, codigoSolicitudAbono);
	}
	
	
	
	
    /**
     * Default constructor. 
     */
    public SolicitudAbonoEJB() {
        // TODO Auto-generated constructor stub
    }

}
